From 5330c6ccfbb6635e2110e184cc119b6dfdb4dbe0 Mon Sep 17 00:00:00 2001 From: "cl349@arcadians.cl.cam.ac.uk" Date: Mon, 6 Dec 2004 20:03:12 +0000 Subject: [PATCH] bitkeeper revision 1.1159.170.58 (41b4bb00jD0BIt8SvQ2huMfxtlNGFg) Cset exclude: iap10@labyrinth.cl.cam.ac.uk|ChangeSet|20041205190407|24206 --- .../drivers/char/mem.c | 22 ++++++++++++------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/linux-2.6.10-rc2-xen-sparse/drivers/char/mem.c b/linux-2.6.10-rc2-xen-sparse/drivers/char/mem.c index 49e94cac98..d6973d3c31 100644 --- a/linux-2.6.10-rc2-xen-sparse/drivers/char/mem.c +++ b/linux-2.6.10-rc2-xen-sparse/drivers/char/mem.c @@ -42,7 +42,12 @@ extern void tapechar_init(void); */ static inline int uncached_access(struct file *file, unsigned long addr) { -#if defined(__i386__) +#ifdef CONFIG_XEN + if (file->f_flags & O_SYNC) + return 1; + /* Xen sets correct MTRR type on non-RAM for us. */ + return 0; +#elif defined(__i386__) /* * On the PPro and successors, the MTRRs are used to set * memory types for physical addresses outside main memory, @@ -201,19 +206,20 @@ static int mmap_mem(struct file * file, struct vm_area_struct * vma) vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot); #endif -#if defined(__sparc__) +#if defined(CONFIG_XEN) if (io_remap_page_range(vma, vma->vm_start, vma->vm_pgoff << PAGE_SHIFT, vma->vm_end-vma->vm_start, - vma->vm_page_prot, 0)) + vma->vm_page_prot)) return -EAGAIN; #else - if (io_remap_page_range(vma, - vma->vm_start, - vma->vm_pgoff << PAGE_SHIFT, - vma->vm_end-vma->vm_start, - vma->vm_page_prot)) + /* Remap-pfn-range will mark the range VM_IO and VM_RESERVED */ + if (remap_pfn_range(vma, + vma->vm_start, + vma->vm_pgoff, + vma->vm_end-vma->vm_start, + vma->vm_page_prot)) return -EAGAIN; #endif return 0; -- 2.30.2